home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
C/C++ Users Group Library 1996 July
/
C-C++ Users Group Library July 1996.iso
/
listings
/
v_09_11
/
9n11107a
< prev
next >
Wrap
Text File
|
1991-09-21
|
2KB
|
75 lines
#include <stdio.h>
#include <string.h>
//
// String class with overloaded cat function
//
class String
{
public:
String() { ... }
String(const char *s) { ... }
String(const String &s) { ... }
~String() { delete str; }
size_t length() { return len; }
const char *text() { return str; }
void cat(char c);
void cat(const char *s);
void cat(const String &s);
char &sub(size_t i) { ... }
private:
size_t len;
char *str;
};
//
// append a character to a String
//
void String::cat(char c)
{
char *p = strcpy(new char[len + 2], str);
p[len++] = c;
p[len] = '\0';
delete str;
str = p;
}
//
// append a nul-terminated string to a String
//
void String::cat(const char *s)
{
size_t n = len + strlen(s) + 1;
char *p = strcpy(new char[n], str);
strcat(p, s);
delete str;
str = p;
}
//
// append a String to a String
//
void String::cat(const String &s)
{
size_t n = len + s.len + 1;
char *p = strcpy(new char[n], str);
strcat(p, s.str);
delete str;
str = p;
}
int main()
{
size_t i;
String s1("hello"); // s1 = "hello"
String s2(s1); // s2 = "hello"
s2.cat(','); // s2 = "hello,"
s2.cat(' '); // s2 = "hello, "
s2.cat(s2); // s2 = "hello, hello, "
s2.cat("world"); // s2 = "hello, hello, world"
printf("s1 = %s\n", s1.text());
printf("s2 = %s\n", s2.text());
return 0;
}